#define _CRT_SECURE_NO_WARNINGS 1

//选择语句

//#include <stdio.h>
//
//int main()
//{
//	//比如说你想先学c语言的话呢，就扣1，否则就想先学python。那程序怎么实现呢？
//	int option;//创建一个名为选项的变量
//	printf("请输入你的选择：");
//	scanf("%d", &option);//输入你的选项
//	if (option == 1)//输入为1，说明想学c语言
//	{
//		printf("恭喜你真是明智的选择！");
//	}
//	else
//	{
//		printf("那就先学python吧");
//	}
//
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//	int count = 520;
//	while (count)
//	{
//		printf("我喜欢你!%d\n", count);//这里为了方便观察程序到底输出了几个我喜欢你，加一个后缀
//		count = count - 1;
//	}
//
//	return 0;
//}

//#include <stdio.h>
//
//int Add(int x, int y)
//{
//	
//	return x + y;
//}
//
//int main()
//{
//	int ret = Add(3, 5);//创建一个变量来接受Add函数的返回值，这个函数的功能是实现输入两个数的和
//	printf("%d\n", ret);
//
//	return 0;
//}

//#include <stdio.h>
//
//int func(int a)
//{
//    int b;
//    switch (a)
//    {
//    case 1: b = 30;
//    case 2: b = 20;
//    case 3: b = 16;
//    default: b = 0;
//    }
//    return b;
//}
//
//int main()
//{
//
//    int ret = func(1);
//    printf("%d", ret);
//    return 0;
//}

//写一个代码：打印100~200之间的素数

//#include <stdio.h>
//
//int main()
//{
//	int n;
//	for (n = 100; n <= 200; n++)//产生100-200个数
//	{
//		int i;//用于产生小于n的数
//		int count;//用于判断是否能被其他数整除的计数器
//		for (i = 2, count = 0; i < n; i++)//判断是否为素数
//		{
//			if (n % i == 0)//判断是否有能被整除的i
//			{
//				count++;
//			}
//		}
//		if (count == 0)//判断是否只能被自己整除
//		{
//			printf("%d\n", n);
//		}
//
//	}
//
//	return 0;
//}

//打印1000年到2000年之间的闰年

//#include <stdio.h>
//
//int main()
//{
//	int year;
//	for (year = 1000; year <= 2000; year++)//产生1000-2000的年份数
//	{
//		if (year % 400 == 0 || year % 4 == 0 && year % 100 != 0)//判断是否为闰年
//		{
//			printf("%d\n", year);
//		}
//	}
//
//	return 0;
//}

//给定两个数，求这两个数的最大公约数

//#include <stdio.h>
//
//int main()
//{
//	int num1;
//	int num2;
//	int max;
//	int min;
//	int s = 1;
//	scanf("%d %d", &num1, &num2);
//	if (num1 > num2)//把二者的最大值和最小值挑选出来
//	{
//		max = num1;
//		min = num2;
//	}
//	else
//	{
//		max = num2;
//		min = num1;
//	}
//	//if (max % min == 0)
//	//{
//	//	printf("最大公约数为：%d\n", min);
//	//}
//	//else
//	//{
//		while (s)//循环去判断最大公约数
//		{
//			s = max % min;
//			if (s == 0)
//				break;
//			max = min;
//			min = s;
//		}
//		printf("最大公约数是：%d\n", min);
//	//}
//
//	return 0;
//}

//求10 个整数中最大值

//#include <stdio.h>
//
//int main()
//{
//	int arr[10] = {0};
//	int i;
//	int max;
//	for (i = 0; i < 10; i++)//输入十个整数
//	{
//		scanf("%d", &arr[i]);
//	}
//
//	for (i = 1, max = arr[0]; i < 10; i++)//比较出最大值
//	{
//		if (arr[i] > max)
//		{
//			max = arr[i];
//		}
//			
//	}
//	printf("%d\n", max);
//
//	return 0;
//}

//计算1 / 1 - 1 / 2 + 1 / 3 - 1 / 4 + 1 / 5 …… + 1 / 99 - 1 / 100 的值，打印出结果

//#include <stdio.h>
//
//int main()
//{
//	int Denominator = 1;//分母
//	int sign = -1;//符号位
//	double sum = 0;//和
//	while (Denominator <= 100)
//	{
//		if (Denominator % 2 != 0)
//		{
//			sign *= -1;//补符号
//		}
//		sum += (double)1 / (sign*Denominator);
//		Denominator++;
//	}
//	printf("%lf\n", sum);
//
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int a = 0, b = 0;
//	for (a = 1, b = 1; a <= 100; a++)
//	{
//		if (b >= 20) break;
//		if (b % 3 == 1)
//		{
//			b = b + 3;
//			continue;
//		}
//		b = b - 5;
//	}
//	printf("%d\n", a);
//	return 0;
//}

//多组输入

//#include <stdio.h>
//
//int main()
//{
//	int n;
//	//while (scanf("%d", &n) == 1)//sacnf函数的返回值是读取的个数，若没有读取到，则返回-1，也即是EOF
//	//{
//	//	printf("%d\n", n);
//	//}
//
//	//while (scanf("%d", &n) != EOF)
//	//{
//	//	printf("%d\n", n);
//	//}
//	while (scanf("%d", &n) != -1)
//	{
//		printf("%d\n", n);
//	}
//
//	return 0;
//}

//验证数组是否可以存储变量

//#include <stdio.h>
//
//int main()
//{
//	int n = 1;
//	scanf("%d", &n);
//	int arr[] = { n };
//	printf("%d", arr[0]);
//
//	return 0;
//}

//#include <stdio.h>
//
//int main()
//{
//	int arr[6] = { 2, 4, 6, 8, 10, 12 };
//	int i;//设置一个变量i来让其遍历数组的下标
//	for (i = 0; i < 6; i++)//将数组的元素一一输出
//	{
//		printf("%d ", arr[i]);
//	}
//
//	return 0;
//}

//#include <stdio.h>
//
//void print()
//{
//	int i = 1;
//	i++;
//	printf("%d ", i);
//}
//
//int main()
//{
//	int i = 0;
//	while (i < 5)
//	{
//		print();
//		i++;
//	}
//
//	return 0;
//}

//#include <stdio.h>
//
//void print()
//{
//	static int i = 1;
//	i++;
//	printf("%d ", i);
//}
//
//int main()
//{
//	int i = 0;
//	while (i < 5)
//	{
//		print();
//		i++;
//	}
//
//	return 0;
//}

//extern 可以用来声明来自其他.c文件的变量or函数

//#include <stdio.h>
//
//int main()
//{
//	int a = 666;
//	int* p = &a;//&是取地址操作符
//	//现在p存的是a的地址哦
//	*p = 66;//这里的*是解引用操作符，*p的意思是通过p指向的地址找到该对象，所以现在*p找到的对象就是a,等效于对a进行操作
//	printf("%d\n", a);
//
//	return 0;
//}


//x86环境下
//#include <stdio.h>
//
//int main()
//{
//	printf("%d\n", sizeof(char*));
//	printf("%d\n", sizeof(short*));
//	printf("%d\n", sizeof(int*));
//	printf("%d\n", sizeof(double*));
//
//	return 0;
//}

//x64环境下

//#include <stdio.h>
//
//int main()
//{
//	printf("%d\n", sizeof(char*));
//	printf("%d\n", sizeof(short*));
//	printf("%d\n", sizeof(int*));
//	printf("%d\n", sizeof(double*));
//
//	return 0;
//}

//结构体

//int main()
//{
//	struct Person
//	{
//		char name[100];//姓名
//		double height;//身高
//		int age;//年龄
//
//	};
//
//	return 0;
//}

//#include <stdio.h>
//
//struct Person
//{
//    char name[100];
//    double height;
//    int age;
//};
//
//int main()
//{
//    struct Person a1 = { "张三",203.9,18 };
//    struct Person a2 = { "李四",168.9,13 };
//    printf("%s %lf %d\n", a1.name, a1.height, a1.age);
//    printf("%s %lf %d\n", a2.name, a2.height, a2.age);
//
//
//    return 0;
//}


#include <stdio.h>

struct Person
{
    char name[100];
    double height;
    int age;
};

int main()
{
    struct Person a1 = { "张三",203.9,18 };
    struct Person a2 = { "李四",168.9,13 };
    struct Person* p = &a1;
    printf("%s %lf %d\n", p->name, p->height, p->age);

    return 0;
}